package com.enjoyor.soa.traffic.api.service.dubbo.iems;

import java.util.Date;
import java.util.List;

import com.enjoyor.soa.traffic.api.dto.iems.ExpertInfoDto;
import com.enjoyor.soa.traffic.api.dto.iems.ResourceHeadQuarterDto;
import com.enjoyor.soa.traffic.api.dto.iems.ResourcePointDto;
import com.enjoyor.soa.traffic.api.enums.EnumResourcePointSubType;
import com.enjoyor.soa.traffic.api.enums.EnumResourcePointType;
import com.enjoyor.soa.traffic.api.enums.PageType;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * @author 周宏伟
 * @date 2017年4月29日
 * @email zhouhongwei@enjoyor.net
 * @description 应急资源信息服务
 */

public interface DubboResourceInfoService {
	/**
	 * 添加指挥部信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param dto
	 *            指挥部信息对象
	 * @return
	 */
	public ResultPojo addHeadQuarter(String token, String systemKey, List<ResourceHeadQuarterDto> dto);

	/**
	 * 编辑指挥部信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param dto
	 *            指挥部信息对象
	 * @return
	 */
	public ResultPojo setHeadQuarter(String token, String systemKey, List<ResourceHeadQuarterDto> dto);

	/**
	 * 获取指挥部详情
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param id
	 *            指挥部顶级节点编号
	 * @return
	 */
	public ResultPojo getHeadQuarter(String token, String systemKey, String id);

	/**
	 * 获取指挥部列表
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param id
	 *            编号
	 * @param name
	 *            名称
	 * @param deptId
	 *            部门编号
	 * @param beginTime
	 *            设立时间开始范围
	 * @param endTime
	 *            设立时间结束范围
	 * @return ResourceHeadQuarterDto集合
	 */
	public ResultPojo getHeadQuarter(String token, String systemKey, String id, String name, String deptId,
			Date beginTime, Date endTime);

	/**
	 * 获取指挥部分页列表
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param page
	 *            分页参数
	 * @param pagetype
	 *            分页类型
	 * @param id
	 *            编号
	 * @param name
	 *            名称
	 * @param deptId
	 *            部门编号
	 * @param beginTime
	 *            设立时间开始范围
	 * @param endTime
	 *            设立时间结束范围
	 * @return ResourceHeadQuarterDto分页集合
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getHeadQuarter(String token, String systemKey, Page page, PageType pagetype, String id,
			String name, String deptId, Date beginTime, Date endTime);

	/**
	 * 删除指挥部信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param id
	 *            编号
	 * @return
	 */
	public ResultPojo delHeadQuarter(String token, String systemKey, String id);

	/**
	 * 写入兴趣点信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param dto
	 *            兴趣点对象
	 * @return
	 */
	public ResultPojo addPoint(String token, String systemKey, ResourcePointDto dto);

	/**
	 * 编辑兴趣点信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param dto
	 *            兴趣点对象
	 * @return
	 */
	public ResultPojo setPoint(String token, String systemKey, ResourcePointDto dto);

	/**
	 * 获取兴趣点列表信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param id
	 *            编号
	 * @param name
	 *            名称
	 * @param address
	 *            地址
	 * @param type
	 *            类型
	 * @param subtype
	 *            子类
	 * @return ResourcePointDto集合
	 */
	public ResultPojo getPoint(String token, String systemKey, String id, String name, String address,
			EnumResourcePointType type, EnumResourcePointSubType subtype);

	/**
	 * 获取兴趣点分页信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param page
	 *            分页参数
	 * @param pagetype
	 *            分页类型
	 * @param id
	 *            编号
	 * @param name
	 *            名称
	 * @param address
	 *            地址
	 * @param type
	 *            类型
	 * @param subtype
	 *            子类
	 * @return ResourcePointDto分页集合
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPoint(String token, String systemKey, Page page, PageType pagetype, String id, String name,
			String address, EnumResourcePointType type, EnumResourcePointSubType subtype);

	/**
	 * 删除兴趣点
	 * 
	 * @param token
	 * @param systemKey
	 * @param id
	 * @return
	 */
	public ResultPojo delPoint(String token, String systemKey, String id);

	/**
	 * 写入专家库
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param dto
	 *            专家库对象
	 * @return
	 */
	public ResultPojo addExpert(String token, String systemKey, ExpertInfoDto dto);

	/**
	 * 编辑专家库
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param dto
	 *            专家库对象
	 * @return
	 */
	public ResultPojo setExpert(String token, String systemKey, ExpertInfoDto dto);

	/**
	 * 获取专家库列表信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param id
	 *            编号
	 * @param name
	 *            名称
	 * @param author
	 *            作者
	 * @param keyword
	 *            关键字
	 * @return
	 */
	public ResultPojo getExpert(String token, String systemKey, String id, String name, String author, String keyword);

	/**
	 * 获取专家库分页信息
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param page
	 *            分页参数
	 * @param pagetype
	 *            分页类型
	 * @param id
	 *            编号
	 * @param name
	 *            名称
	 * @param author
	 *            作者
	 * @param keyword
	 *            关键字
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getExpert(String token, String systemKey, Page page, PageType pagetype, String id, String name,
			String author, String keyword);

	/**
	 * 删除专家库
	 * 
	 * @param token
	 *            令牌
	 * @param systemKey
	 *            授权码
	 * @param id
	 *            编号
	 * @return
	 */
	public ResultPojo delExpert(String token, String systemKey, String id);
}
